package com.ruoyi.system.utils;

import com.ruoyi.system.domain.vo.TreeVo;
import org.springframework.util.ObjectUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * 树结构生成器
 */
public class TreeGeneratorUtil {
    /**
     * 构建商品分类树
     * @param allCategories 所有分类列表（从数据库查询得到）
     * @return 树形结构的分类列表
     */
    public static List<TreeVo> buildCategoryTree(List<TreeVo> allCategories) {
        List<TreeVo> tree = new ArrayList<>();

        // 1. 找出所有顶级分类（parentId为0的）
        for (TreeVo category : allCategories) {
            if (category.getParentId() == 0 ) {
                // 2. 递归查找子分类
                findChildren(category, allCategories);
                tree.add(category);
            }
        }

        return tree;
    }

    /**
     * 递归查找子分类
     * @param parent 父分类
     * @param allCategories 所有分类列表
     */
    private static void findChildren(TreeVo parent, List<TreeVo> allCategories) {
        List<TreeVo> children = new ArrayList<>();

        for (TreeVo category : allCategories) {
            if (category.getParentId().equals(parent.getId())) {
                // 递归查找子分类的子分类
                findChildren(category, allCategories);
                children.add(category);
            }
        }

        if (!children.isEmpty()) {
            parent.setChildren(children);
        }
    }
}
